Принцип інверсії залежностей (DIP)
📌 Що таке DIP?
Принцип інверсії залежностей (Dependency Inversion Principle) говорить про те, що:
- Модулі вищого рівня не повинні залежати від модулів нижчого рівня. Обидва повинні залежати від абстракцій.
- Абстракції не повинні залежати від деталей. Деталі повинні залежати від абстракцій.
🛠 Приклад порушення DIP
У цьому прикладі клас OrderService напряму залежить від MySQLOrderRepository, що ускладнює заміну репозиторію.
public class MySQLOrderRepository {
public void saveOrder(String order) {
System.out.println("Збереження замовлення у MySQL");
}
}
public class OrderService {
private MySQLOrderRepository repository = new MySQLOrderRepository();
public void processOrder(String order) {
repository.saveOrder(order);
}
}
✅ Виправлення DIP
Використаємо **інтерфейс**, щоб зробити систему гнучкішою.
public interface OrderRepository {
void saveOrder(String order);
}
public class MySQLOrderRepository implements OrderRepository {
@Override
public void saveOrder(String order) {
System.out.println("Збереження замовлення у MySQL");
}
}
public class OrderService {
private final OrderRepository repository;
public OrderService(OrderRepository repository) {
this.repository = repository;
}
public void processOrder(String order) {
repository.saveOrder(order);
}
}
Назад Далі